﻿using System;
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using NHibernate;
using NHibernate.Cfg;

/// <summary>
/// Se Encarga del manejo de la clase Paquete, agregando 2 funciones
/// </summary>
public class PaqueteControl
{
	public PaqueteControl()
	{
		//
		// TODO: Agregar aquí la lógica del constructor
		//
	}
    /// <summary>
    ///Se encarga de buscar todos los empleados y segun su sueldo y algunas etiquetas, que se encuentran
    ///en el Web.Config, de armar el paquete anual que contiene todos los beneficios que ha recibido ese
    ///empleado en el año sumados. esto asi para todos os empleados.
    /// 
    /// Autor: Equipo # 4
    /// </summary>
    /// <returns> una lista de paquetes con todos los empleados </returns>
    public IList ArmarPaquete()
    {
        ISession session = NHibernateControl.GetCurrentSession();
        ITransaction tx = session.BeginTransaction();
        IList lista = session.CreateCriteria(typeof(Empleado)).List();
        session.Flush();
        NHibernateControl.CloseSession();
        IList Lista2 = new ArrayList();
        
        foreach (Empleado actual in lista)
        {
            string SSO = ConfigurationManager.AppSettings["SSO"];
            float sso = float.Parse(SSO.ToString());
            string LPH = ConfigurationManager.AppSettings["LPH"];
            float lph = float.Parse(LPH.ToString());
            float sueldo = float.Parse(actual.Sueldo.ToString());
            float bono = float.Parse(actual.Bono.ToString());

            Paquete paquete = new Paquete();
                            
            float paquetsso = sueldo * 12 *sso;
            paquete.SSO = paquetsso;                
            float paquetlph = sueldo * 12 * lph;                
            paquete.LPH = paquetlph;
            
            float total = (sueldo * 12) + paquetlph + paquetsso + bono;
            paquete.Nombre = actual.Nombre;
            paquete.Apellido = actual.Apellido;
            paquete.Cedula = actual.Cedula;
            paquete.PaqTotal = total;
             
            Lista2.Add(paquete);          
        }
 
    return Lista2;
    }

    /// <summary>
    ///Se encarga de buscar entre todos los empleados el numero de cedula que se envio como parametro y 
    ///y segun su sueldo y algunas etiquetas, que se encuentran en el Web.Config, de armar el paquete anual
    ///que contiene todos los beneficios que ha recibido ese empleado en el año estos campos van desglosados.
    /// 
    /// Autor: Equipo # 4
    /// </summary>
    /// <param name="cedula"> 
    ///     Parámetro de tipo String, contiene la cedula a buscar.
    /// </param>
    /// <returns> una lista de paquetes que contiene los records que compartan la misma cedula buscada.</returns>
    public IList PaqueteIndividual(String cedula)
    {
        ISession session = NHibernateControl.GetCurrentSession();
        ITransaction tx = session.BeginTransaction();
        IList lista = session.CreateCriteria(typeof(Empleado)).List();
        session.Flush();
        NHibernateControl.CloseSession();
        IList Lista2 = new ArrayList();

        foreach (Empleado actual in lista)
        {           
            if (actual.Cedula.Equals(cedula))
            {    
                Paquete paquete = new Paquete();
                string SSO = ConfigurationManager.AppSettings["SSO"];
                float sso = float.Parse(SSO.ToString());
                string LPH = ConfigurationManager.AppSettings["LPH"];
                float lph = float.Parse(LPH.ToString());
                float sueldo = float.Parse(actual.Sueldo.ToString());
                float bono = float.Parse(actual.Bono.ToString());
               
                float paquetsso = sueldo * 12 * sso;
                paquete.SSO = paquetsso;
                float paquetlph = sueldo * 12*  lph;
                paquete.LPH = paquetlph;
                float total = (sueldo * 12) + paquetlph + paquetsso + bono;
                paquete.Nombre = actual.Nombre;
                paquete.Apellido = actual.Apellido;
                paquete.Cedula = actual.Cedula;
                paquete.Sueldo = actual.Sueldo;
                paquete.Bono = actual.Bono;
                paquete.SSO = paquetsso;
                paquete.LPH = paquetlph;
                paquete.PaqTotal = total;

                Lista2.Add(paquete);
            }
        }
        return Lista2;
    }


}
